package com.ruoyi.system.mapper;

import java.math.BigDecimal;
import java.util.List;

import cn.hutool.core.date.DateTime;
import com.ruoyi.system.domain.ProfitMoney;
import com.ruoyi.system.dto.ListByTypeAndTime;
import com.ruoyi.system.dto.SumUser;
import org.apache.ibatis.annotations.Param;

/**
 * 财务明细Mapper接口
 * 
 * @author ruoyi
 * @date 2022-05-24
 */
public interface ProfitMoneyMapper 
{
    /**
     * 查询财务明细
     * 
     * @param id 财务明细主键
     * @return 财务明细
     */
    public ProfitMoney selectProfitMoneyById(Integer id);

    /**
     * 查询财务明细列表
     * 
     * @param profitMoney 财务明细
     * @return 财务明细集合
     */
    public List<ProfitMoney> selectProfitMoneyList(ProfitMoney profitMoney);

    /**
     * 新增财务明细
     * 
     * @param profitMoney 财务明细
     * @return 结果
     */
    public int insertProfitMoney(ProfitMoney profitMoney);

    /**
     * 修改财务明细
     * 
     * @param profitMoney 财务明细
     * @return 结果
     */
    public int updateProfitMoney(ProfitMoney profitMoney);

    /**
     * 删除财务明细
     * 
     * @param id 财务明细主键
     * @return 结果
     */
    public int deleteProfitMoneyById(Integer id);

    /**
     * 批量删除财务明细
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProfitMoneyByIds(Integer[] ids);

    List<ProfitMoney> selectProfitMoneyByIdAndTime(@Param("start") String l2,@Param("end") String l1,@Param("userId") String userId);

    List<SumUser> userTotalXfPh(@Param("start") String start,@Param("end") String end);

    List<ProfitMoney> selectList(@Param("userId") String userId,@Param("type") Integer type,
                                 @Param("s") DateTime beginOfDay,@Param("e") DateTime endOfDay);

    Double selectRangeSum(@Param("type") Integer type,@Param("start") String start, @Param("end") String end);

    List<ProfitMoney> selectRangeList(@Param("type") Integer type, @Param("start") String start, @Param("end") String end);

    List<ProfitMoney> selectProfitByTypeV2(@Param("j") ListByTypeAndTime listByType);

    BigDecimal selectProfitSum(@Param("j") ListByTypeAndTime listByType);
}
